package org.cunamas.core.service.impl;

import java.util.List;

import javax.faces.model.SelectItem;

import org.cunamas.core.bean.BudgetInputBean;
import org.cunamas.core.bean.LocalesBean;
import org.cunamas.core.bean.LogBean;
import org.cunamas.core.bean.ServiciosAlimentariosBean;
import org.cunamas.core.dao.AsistenciaGrupoEtareoDao;
import org.cunamas.core.dao.AtencionIntegralPesoTallaDao;
import org.cunamas.core.dao.AtencionIntegralTallaEdadDao;
import org.cunamas.core.dao.CoberturaAtencionDao;
import org.cunamas.core.dao.ComiteDesempenioDao;
import org.cunamas.core.dao.CulturaCrianzaDao;
import org.cunamas.core.dao.DesempenioAnioDao;
import org.cunamas.core.dao.DesempenioMadresDao;
import org.cunamas.core.dao.DesempenioPracticaDao;
import org.cunamas.core.dao.LocalesSpDao;
import org.cunamas.core.dao.LogDao;
import org.cunamas.core.dao.PermanenciaDao;
import org.cunamas.core.dao.PracticasCrianzaSpDao;
import org.cunamas.core.dao.PresupuestoSpDao;
import org.cunamas.core.dao.ReporteTotalMejDiagDao;
import org.cunamas.core.dao.ReporteTotalNiniosAtendidosDao;
import org.cunamas.core.dao.ReporteTotalNiniosDocDao;
import org.cunamas.core.dao.ReporteTotalProtegidosSo3Dao;
import org.cunamas.core.dao.ReporteTotalwwComFam3Dao;
import org.cunamas.core.dao.ServiciosAlimentariosSpDao;
import org.cunamas.core.dao.UbigeoDao;
import org.cunamas.core.dto.AsistenciaGrupoEtareoDto;
import org.cunamas.core.dto.CoberturaAtencionDto;
import org.cunamas.core.dto.ComitesDesempenioDto;
import org.cunamas.core.dto.CulturaCrianzaDto;
import org.cunamas.core.dto.DesempenioAnioDto;
import org.cunamas.core.dto.DesempenioPracticaDto;
import org.cunamas.core.dto.Filtros;
import org.cunamas.core.dto.GraficoBarrasDto;
import org.cunamas.core.dto.PermanenciaDto;
import org.cunamas.core.dto.PracticasCrianzaDto;
import org.cunamas.core.dto.ReporteTotalMejDiagDto;
import org.cunamas.core.dto.ReporteTotalNiniosAtendidosDto;
import org.cunamas.core.dto.ReporteTotalNiniosDocDto;
import org.cunamas.core.dto.ReporteTotalProtegidosSo3Dto;
import org.cunamas.core.dto.ReporteTotalWwComFam3Dto;
import org.cunamas.core.service.ReportesCunamasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class ReportesCunamasServiceImpl implements ReportesCunamasService {
	
	@Autowired
	private AsistenciaGrupoEtareoDao grupoEtareoDao;
	@Autowired
	private CoberturaAtencionDao coberturaAtencionDao;
	@Autowired
	private UbigeoDao ubigeoDao;
	@Autowired
	private AtencionIntegralTallaEdadDao tallaEdadDao;
	@Autowired
	private AtencionIntegralPesoTallaDao pesoTallaDao;
	@Autowired
	private PermanenciaDao permanenciaDao;
	@Autowired
	private DesempenioMadresDao desempenoMadresDao;
	@Autowired
	private CulturaCrianzaDao culturaCrianzaDao;
	@Autowired
	private PracticasCrianzaSpDao practicasCrianzaSpDao;
	@Autowired
	private DesempenioPracticaDao desempenioPracticaDao;
	@Autowired
	private DesempenioAnioDao desempenioAnioDao;
	@Autowired
	private ComiteDesempenioDao comiteDesempenioDao;
	@Autowired
	private LocalesSpDao localesSpDao;
	@Autowired
	private ServiciosAlimentariosSpDao serviciosAlimentariosSpDao;
	@Autowired
	private PresupuestoSpDao presupuestoSpDao;
	@Autowired
	private ReporteTotalMejDiagDao reporteTotalMejDiagDao;
	@Autowired
	private ReporteTotalNiniosAtendidosDao reporteTotalNiniosAtendidosDao;
	@Autowired
	private ReporteTotalNiniosDocDao reporteTotalNiniosDocDao;
	@Autowired
	private ReporteTotalProtegidosSo3Dao reporteTotalProtegidosSo3Dao;
	@Autowired
	private ReporteTotalwwComFam3Dao reporteTotalwwComFam3Dao;
	@Autowired
	private LogDao logDao;

	public List<BudgetInputBean> processBudgetReport(Long anio, Long mes) {
		Filtros filtros = new Filtros();
		filtros.setAnio(anio.toString());
		filtros.setMes(mes.toString());
		return presupuestoSpDao.findBudgetDataByPeriod(filtros);
	}
	
	public  List<SelectItem> retornaDepartamentos(){
		return ubigeoDao.retornaDepartamentos();
	}

	public  List<SelectItem> retornaProvincia(String dep){
		return ubigeoDao.retornaProvincia(dep);
	}

	public  List<SelectItem> retornaDistrito(String pro){
		return ubigeoDao.retornaDistrito(pro);
	}

	public  List<SelectItem> retornaSede(String dep){
		return ubigeoDao.retornaSede(dep);
	}
	
	public  List<AsistenciaGrupoEtareoDto> retornaAsistenciaGrupoEtareo(Filtros filtros){
		return grupoEtareoDao.retornaAsistenciaGrupoEtareo(filtros);
	}
	
	public  List<CoberturaAtencionDto> retornaCoberturaAtencion(
			Filtros filtros){
		return coberturaAtencionDao.retornaCoberturaAtencion(filtros);
	}
	
	public  List<GraficoBarrasDto> retornaAtencionIntegralTallaEdad(
			Filtros filtros){
		return tallaEdadDao.retornaAtencionIntegralPesoTalla(filtros);
	}
	
	public List<GraficoBarrasDto> retornaAtencionIntegralPesoTalla(Filtros filtros){
		return pesoTallaDao.retornaAtencionIntegralPesoTalla(filtros);
	}
	
	public List<SelectItem> retornaComite(String ubigeo){
		return ubigeoDao.retornaComite(ubigeo);
	}
	
	public List<PermanenciaDto> retornaPermanencia(Filtros filtros){
		return permanenciaDao.retornaPermanencia(filtros);
	}
	
	public List<GraficoBarrasDto> retornaDesempenoMadres(Filtros filtros){
		return desempenoMadresDao.retornaDesempenioMadres(filtros);
	}
	
	public List<CulturaCrianzaDto> retornaCulturaCrianza(Filtros filtros){
		return culturaCrianzaDao.retornaCulturaCrianza(filtros);
	}
	
	public List<PracticasCrianzaDto> retornaPracticasCrianza(Filtros filtros){
		return practicasCrianzaSpDao.retornaPracticasCrianza(filtros);
	}
	
	public List<DesempenioPracticaDto> retornaDesempanioPractica(Filtros filtros){
		return desempenioPracticaDao.retornaDesempanioPractica(filtros);
	}
	
	public List<DesempenioAnioDto> retornaDesempanioAnio(Filtros filtros){
		return desempenioAnioDao.retornaDesempanioAnio(filtros);
	}
	
	public List<ComitesDesempenioDto> retornaComiteDesempenio(Filtros filtros){
		return comiteDesempenioDao.retornaComiteDesempenio(filtros);
	}

	public List<LocalesBean> retornaLocales(Filtros filtros) {
		return localesSpDao.retornaLocales(filtros);
	}

	public List<ServiciosAlimentariosBean> retornaServiciosAlimentarios(Filtros filtros) {
		return serviciosAlimentariosSpDao.retornaServiciosAlimentarios(filtros);
	}
	
	public List<ReporteTotalMejDiagDto>  retornaReporteTotalMejDiagDto(Filtros filtros){
		return reporteTotalMejDiagDao.retornaReporteTotalMejDiagDto(filtros);
	}
	
	public List<ReporteTotalNiniosAtendidosDto>  retornaReporteTotalNiniosAtendidos(Filtros filtros){
		return reporteTotalNiniosAtendidosDao.retornaReporteTotalNiniosAtendidos(filtros);
	}
	
	public List<ReporteTotalNiniosDocDto> retornaReporteTotalNiniosDoc(Filtros filtros){
		return reporteTotalNiniosDocDao.retornaReporteTotalNiniosDoc(filtros);
	}
	
	public List<ReporteTotalProtegidosSo3Dto> retornaReporteTotalProtegidosSo3Dto(Filtros filtros){
		return reporteTotalProtegidosSo3Dao.retornaReporteTotalProtegidosSo3Dto(filtros);
	}
	
	public List<ReporteTotalWwComFam3Dto> retornaReporteTotalWwComFam3Dto(Filtros filtros){
		return reporteTotalwwComFam3Dao.retornaReporteTotalWwComFam3Dto(filtros);
	}
	
	public void persistLog(LogBean log){
		logDao.persistLog(log);
	}
}
